package com.xiaobo.client;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.xiaobo.util.HttpUtil;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;

public class ListNsrYh extends Activity {
	private String nsrnbm;// 内部码
	
	private String userKey;
	
	
	// 以下代码是Hanler示例代码，对于耗时的查询需要用以下代码给出进度条
	ProgressDialog pb1;// 进度条
	// 定义Handler直接用，不需要修改
	private Handler handler = new Handler() {
		@Override
		// 当有消息发送出来的时候就执行Handler的这个方法
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			
            //对于ＵＩ的更新，代码只能在这儿进行
			
			//接受进程执行完成后的Message，刷新界面ＵＩ
			ArrayList list=	(ArrayList)msg.obj;
			
			//以下更改ＵＩ代码，需要根据你的情况来写
			//在本类中，是根据Message返回的ArrayList写ListView
			SimpleAdapter listItemAdapter = new SimpleAdapter(ListNsrYh.this, list,// 数据源
					R.layout.listyhxx,
					new String[] { "hb", "khhmc", "zh", "zhbj", "kh_rq",
							"nsrkh_mc", "xy" },
					new int[] { R.id.hb, R.id.khhmc, R.id.zh, R.id.zhbj,
							R.id.kh_rq, R.id.nsrkh_mc, R.id.xy, });

			((ListView) findViewById(R.id.nsryhxx_lv)).setAdapter(listItemAdapter);
			
			
			//执行完成后关闭对话框 ，此对话框是在processThread中打开的，就是旋转ProgressDialog
			pb1.dismiss();
		}
	};

	// 主进程
	private void processThread() {
		// 构建一个下载进度条
		pb1 = ProgressDialog.show(ListNsrYh.this, "查询银行信息", "正在查询……");
		new Thread() {
			@Override
			public void run() {
				//把耗时长的代码全放在这儿
				
				//耗时代码开始
				//耗时代码，是根据你所做工作的不同而不同，但在这儿不能有更新UI的代码
				//本程序中，是查询银行信息，并把ＪＳＯＮ数据转成ArrayList
				Intent intent = getIntent();
				Bundle bundle = intent.getExtras();
				nsrnbm = bundle.getString("nsrnbm");
				userKey=bundle.getString("userKey");
				ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
				try {
					JSONArray arr = new JSONArray(getYhList(nsrnbm));
					for (int i = 0; i < arr.length(); i++) {
						HashMap<String, String> map = new HashMap<String, String>();
						JSONObject e = arr.getJSONObject(i);

						map.put("hb", "行别:" + e.getString("hb"));
						map.put("khhmc", "开户名称: " + e.getString("khhmc"));
						map.put("zh", "帐号: " + e.getString("zh"));
						map.put("zhbj", "帐号标记: " + e.getString("zhbj"));
						System.out.println(e.getString("kh_rq"));
						map.put("kh_rq", "开户日期: " + e.getString("kh_rq"));
						map.put("nsrkh_mc", "纳税人开户名称: " + e.getString("nsrkh_mc"));
						map.put("xy", "选用标记: " + e.getString("xy"));
						mylist.add(map);
					}

				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				//耗时代码结束
				//定义一个Ｍessage将查询执行结果返回到Handel,用于写ＵＩ
				Message msg = new Message();
                msg.obj=mylist;
				handler.sendMessage(msg);
			}
		}.start();
	}



	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listyhxxmain);
		//在这儿只需要调用这个方法就可以了
		processThread();
		
	}
	
	
    //此方法用于与后台交互，查询银行信息
	public String getYhList(String nsrnbm) {
		String result = null;
		//后台HttpServlet定义，需要在HttpUtil类中定义
		String url = HttpUtil.getNsrYhList;
		// 获得请求对象

		//调用HttpUtil类中的函数，返回HttpPost
		HttpPost req = HttpUtil.getHttpPost(url);

		// 设置表单参数
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("nsrnbm", nsrnbm));
		params.add(new BasicNameValuePair("userKey", userKey));
		
		// 设置请求对象的编码
		try {
			req.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
			result = HttpUtil.getStringByPost(req);
			return result;
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
}
